#ifndef _CBROWSERAPP_H_
#define _CBROWSERAPP_H_

#include <buola/app/capp.h>
#include <buola/app/ccmdline.h>
#include <buola/dbus/cobject.h>
#include "cbrowserwindow.h"

namespace buola { namespace browser {

class CBrowserApp : public CApp, public dbus::CObject<CBrowserApp>
{
public:
    CBrowserApp();
    ~CBrowserApp();

    bool Activate();
    bool Start();

    void NewWindow(const io::CURI &pURI);

    void OnWindowDestroyed(const PBrowserWindow &pWindow);

public:
    template <class tIntrospector>
    static void Introspect(tIntrospector &pI)
    {
        pI.template AddMethod<void(const io::CURI&)>("NewWindow",&CBrowserApp::NewWindow);
    }

protected:
    std::vector<PBrowserWindow> mWindows;
    static CCmdLineFlag mOptionService;
};

/*namespace browser*/ } /*namespace buola*/ }

#endif
